#ifndef AMFOBJECT_H
#define AMFOBJECT_H

#include <wx/intl.h>
#include <wx/string.h>
#include <wx/object.h>
//#include <vector.h>


namespace AMF {

    class AMF0DataType
    {
        public:
            static const wxByte
                Number = 0x00,
                Boolean = 0x01,
                String = 0x02,
                Object = 0x03,
                MovieClip = 0x04,
                Null = 0x05,
                Undefined = 0x06,
                Referenced = 0x07,
                MixedArray = 0x08,
                End = 0x09,
                Array = 0x0A,
                Date = 0x0B,
                LongString = 0x0C,
                Unsupported = 0x0D,
                Recordset = 0x0E,
                Xml = 0x0F,
                TypedObject = 0x10,
                AMF3Data = 0x11;
    };

    class AMF3DataType
    {
        public:
           static const wxByte
                Undefined = 0,
                Null = 0x01,
                False = 0x02,
                True = 0x03,
                Integer = 0x04,
                Double = 0x05,
                String = 0x06,
                XmlDoc = 0x07,
                Date = 0x08,
                Array = 0x09,
                Object = 0x0A,
                Xml = 0x0B,
                ByteArray = 0x0C;
    };

    class AMFObject
    {
        public:
            AMFObject() ;
            AMFObject(bool isAMF3);
            AMFObject(bool isAMF3, wxString content = wxEmptyString);
            AMFObject(bool isAMF3, wxByte type, void *content);
            virtual ~AMFObject();
            wxByte _type; //= AMF0DataType::Null;
            void *_content;
            bool _amf3;
            wxString ToTypeString() {return toString(true);};
            wxString ToString() {return toString(false);};
        protected:
        private:
            wxString toString(bool writeType);
    };
};

#endif // AMFOBJECT_H
